package it.agm.fanta.adapter;

import it.agm.fanta.FantaserviceApp;
import it.agm.fanta.model.Giocatore;

import java.util.ArrayList;

public  class InfoGiocatore{
	private ArrayList<Giocatore> listaTmpDaSchierare = null;
 	private ArrayList<Giocatore> listaTmpRiserve= null;
 	private int sizeType = 0;
 	private int posizioneRiserva = 0;
 	private int posizioneTitolare = 0;
 	private String tipo="";
 	
 	public void setInfo(Giocatore giocatore){
 		switch (giocatore.getRuolo()) {
    	case Giocatore.PORTIERE:
    		listaTmpDaSchierare = FantaserviceApp.portieriDaSchierare;
    		listaTmpRiserve = FantaserviceApp.portieriRiserva;
    		sizeType = 1;
    		tipo = "Portieri";
			break;
    	case Giocatore.DIFENSORE:
    		listaTmpDaSchierare = FantaserviceApp.difensoriDaSchierare;
    		listaTmpRiserve = FantaserviceApp.difensoriRiserva;
    		sizeType = FantaserviceApp.difesa;
    		tipo = "Difensori";
			break;	
    	case Giocatore.CENTROCAMPISTA:
    		listaTmpDaSchierare = FantaserviceApp.centrocampistiDaSchierare;
    		listaTmpRiserve = FantaserviceApp.centrocampistiRiserva;
    		sizeType = FantaserviceApp.centrocampo;
    		tipo = "Centrocampisti";
			break;
    	case Giocatore.ATTACCANTE:
    		listaTmpDaSchierare = FantaserviceApp.attaccantiDaSchierare; 
    		listaTmpRiserve = FantaserviceApp.attaccantiRiserva; 
    		sizeType = FantaserviceApp.attacco;
    		tipo = "Attaccanti";
			break;	
		default:
			break;
		}
 	}
 	
 	public int getPosizioneGiocatore(char tipo, char ruolo){
 		int ret = 0;
 		int pre=0;
 		int sizeType = 0;
 		switch (ruolo) {
    	case Giocatore.PORTIERE:
    		sizeType = 1;
			break;
    	case Giocatore.DIFENSORE:
    		pre=1;
    		sizeType = FantaserviceApp.difesa +1 ;
			break;	
    	case Giocatore.CENTROCAMPISTA:
    		pre = FantaserviceApp.difesa + 1;
    		sizeType =  FantaserviceApp.difesa + FantaserviceApp.centrocampo +1 ;
			break;
    	case Giocatore.ATTACCANTE:
    		pre = FantaserviceApp.difesa + FantaserviceApp.centrocampo +1 ;
    		sizeType = FantaserviceApp.difesa + FantaserviceApp.centrocampo + FantaserviceApp.attacco +1;
			break;	
		default:
			break;
		}
 		if(Giocatore.TITOLARE == tipo){
 			for (int i=pre; i<sizeType; i++ ) {
				if(!FantaserviceApp.indiciTitolari.get(i).isChecked()){
					ret = FantaserviceApp.indiciTitolari.get(i).getIndex();
					FantaserviceApp.indiciTitolari.get(i).setChecked(true);
					break;
				}
			}
		}else{
			for (IndicePosizione indice : FantaserviceApp.indiciRiserve) {
				if(!indice.isChecked()){
					ret = indice.getIndex();
					indice.setChecked(true);
					break;
				}
			}
		}
 		return ret;
 	}
 	
 	public void removePosizioneGiocatore(char tipo,int posizione) {
 		if(Giocatore.TITOLARE == tipo){
 			for (IndicePosizione indice : FantaserviceApp.indiciTitolari) {
				if(indice.getIndex() ==posizione ){
					indice.setChecked(false);
					break;
				}
			}
		}else{
			for (IndicePosizione indice : FantaserviceApp.indiciRiserve) {
				if(indice.getIndex() ==posizione ){
					indice.setChecked(false);
					break;
				}
			}
		}
	}

	/**
	 * @return the listaTmpDaSchierare
	 */
	public ArrayList<Giocatore> getListaTmpDaSchierare() {
		return listaTmpDaSchierare;
	}

	/**
	 * @param listaTmpDaSchierare the listaTmpDaSchierare to set
	 */
	public void setListaTmpDaSchierare(ArrayList<Giocatore> listaTmpDaSchierare) {
		this.listaTmpDaSchierare = listaTmpDaSchierare;
	}

	/**
	 * @return the listaTmpRiserve
	 */
	public ArrayList<Giocatore> getListaTmpRiserve() {
		return listaTmpRiserve;
	}

	/**
	 * @param listaTmpRiserve the listaTmpRiserve to set
	 */
	public void setListaTmpRiserve(ArrayList<Giocatore> listaTmpRiserve) {
		this.listaTmpRiserve = listaTmpRiserve;
	}

	/**
	 * @return the sizeType
	 */
	public int getSizeType() {
		return sizeType;
	}

	/**
	 * @param sizeType the sizeType to set
	 */
	public void setSizeType(int sizeType) {
		this.sizeType = sizeType;
	}

	/**
	 * @return the tipo
	 */
	public String getTipo() {
		return tipo;
	}

	/**
	 * @param tipo the tipo to set
	 */
	public void setTipo(String tipo) {
		this.tipo = tipo;
	}

	/**
	 * @return the posizioneRiserva
	 */
	public int getPosizioneRiserva() {
		return posizioneRiserva;
	}

	/**
	 * @param posizioneRiserva the posizioneRiserva to set
	 */
	public void setPosizioneRiserva(int posizioneRiserva) {
		this.posizioneRiserva = posizioneRiserva;
	}

	/**
	 * @return the posizioneTitolare
	 */
	public int getPosizioneTitolare() {
		return posizioneTitolare;
	}

	/**
	 * @param posizioneTitolare the posizioneTitolare to set
	 */
	public void setPosizioneTitolare(int posizioneTitolare) {
		this.posizioneTitolare = posizioneTitolare;
	} 	
}
